<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    函数式编程 ：对运算过程进行抽象，描述数据之间的映射，相同的输入要有相同的输出
    函数的一等公民：函数可以存储在变量中，函数可作为参数，函数可以作为返回值
    高阶函数：函数作为参数，提高函数的复用率和灵活性
            函数作为返回值
    高阶函数的意义： 函数变的灵活，代码简洁不用关注执行的过程
    闭包：延长了外部函数内部变量的作用范围
    如果在外部函数同作用域下调用外部函数的内部函数，外部函数的内部变量不会被释放，但是外部函数会在执行栈上被移除。
    function a(fn){
        let mmsg = '调fn不会被释放的'；
        fn(msg)
    }
    let b = a(function(msg){
        console.log(这里在a函数外的b调用了a的fn所以a的msg不会被释放)//虽然msg因为b调用不能释放，但是函数a在执行完毕后依旧会从执行栈上移除
        扩大了 msg的作用范围
    })
    函数式编程中的函数 指的是纯函数  输入和输出的映射关系  相同的输入永远得到相同的输出

</div>
</body>
</html>